<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Object</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/default.css" rel="stylesheet" type="text/css">
</head>
<body>

<h1>对象</h1>

<p>所有由 <a href="../Objects.htm#Arrays">Object()</a> 创建的对象的内置方法都可以作为正常的函数或方法访问:</p>
<pre>result := obj.Method(params)</pre>
<p>这种调用方法允许每个对象为此方法实现自身的行为. 但是如果一个对象撤销了内置方法, 通常需要一种方式访问原始的功能. 可以使用函数的形式进行访问:</p>
<pre>result := ObjMethod(obj, params)</pre>
<p>直接调用函数会执行得稍快些, 因为函数名称在装载时解析, 不过语法往往不够直观. 对象实现的任何自定义行为都被忽略, 所以这些函数一般应该仅对象自身使用.</p>

<div class="methodShort" id="Insert"><h2>Insert <span class="ver">[AHK_L 31+]</span></h2>
<p>插入键值对到对象中, 在合适时自动调整现有的键.</p>
<pre class="Syntax">Object.Insert(Index, Value1 [, Value2, ... Value<i>N</i> ]) Object.Insert(Value) Object.Insert(Key, Value)</pre>
<table class="info">
  <tr><td width="15%">Index</td><td width="85%">表示 Value1 插入位置的整数键. 后续的值插入到 Index+1, Index+2 等.<br>
  如果省略, 默认为 <code>MaxIndex()="" ? 1 : MaxIndex() + 1</code>.</td></tr>
  <tr><td>Key</td><td>字符串或目标键. 如果键已经存在, 其值会被改写.</td></tr>
  <tr><td>Value</td><td>字符串, 数字或对象.</td></tr>
  <tr><td><b>返回值</b></td><td>成功时返回 <i>true</i>, 而脚本内存不足时返回一个空字符串.</td></tr>
</table>
<h3>备注</h3>
<p>注意此方法忽略 <a href="../Objects.htm#MetaFunc">__Set</a> 结构和 <a href="../Objects.htm#Extensibility">base</a> 键的特殊行为. 例如, <code>Object.Insert("base","")</code> 会使得 <code>Object.base</code> 返回一个空字符串而不是真正的基础对象, 但这样不会阻止触发对象元函数的其他操作.</p>
</div>

<div class="methodShort" id="Remove"><h2>Remove <span class="ver">[AHK_L 31+]</span></h2>
<p>移除对象中的键值对.</p>
<pre class="Syntax">Object.Remove(FirstKey, LastKey)</pre>
<table class="info">
  <tr><td width="15%">FirstKey, LastKey</td><td width="85%">需移除的整数或字符串键的范围. 如果两个键都是整数, 任何大于 <i>LastKey</i> 的整数键通过减去 <code>(LastKey - FirstKey + 1)</code> 来模仿典型的基于数值索引的数组. 两个键必须为相同的类型 (整数或字符串).</td></tr>
  <tr><td><b>返回值</b></td><td>成功时返回被移除的实际键值对数目, 没有找到键则为零, 而失败时为空字符串.</td></tr>
</table>
<pre class="Syntax" style="margin-top:15px">Object.Remove(Key = <i>MaxIndex()</i>)</pre>
<table class="info">
  <tr><td width="15%">Key</td><td width="85%">任何有效键. 如果省略, 默认为最大的现有整数键; 如果不存在, 则什么都不移除. 调整现有的键就像使用 <code>Remove(Key,Key)</code> 一样.</td></tr>
  <tr><td><b>返回值</b></td><td>被移除的值, 如果有的话; 否则为空字符串.</td></tr>
</table>
<pre class="Syntax" style="margin-top:15px">Object.Remove(IntKey, "")</pre>
<p><span class="ver">[AHK_L 61+]:</span> 移除一个整数键并返回其值, 但不影响其他整数键.</p>
</div>

<div class="methodShort" id="MinMaxIndex"><h2>MinIndex / MaxIndex <span class="ver">[AHK_L 31+]</span></h2>
<pre class="Syntax">MinIndex := Object.MinIndex()
MaxIndex := Object.MaxIndex()</pre>
<p>如果存在整数键, MinIndex 返回最小的那个而 MaxIndex 返回最大的那个. 否则返回空字符串.</p></div>

<div class="methodShort" id="SetCapacity"><h2>SetCapacity <span class="ver">[AHK_L 31+]</span></h2>
<p>调整对象或其一个区域占用的内存空间.</p>
<pre class="Syntax">Object.SetCapacity(MaxItems)
Object.SetCapacity(Key, ByteSize)</pre>
<table class="info">
  <tr><td width="15%">MaxItems</td><td width="85%">对象在必须自动扩展前它可以包含的键值对的最大数目. 如果小于当前键值对的数目, 则缩小对象以匹配.</td></tr>
  <tr><td>Key</td><td>任何有效键.</td></tr>
  <tr><td>ByteSize</td><td>为目标区域字符串缓存设置的新大小, 单位为字节, 不包括空终止符. 如果区域不存在, 则创建它. 如果 <i>ByteSize</i> 为零, 则清空缓存但不移除空区域. 如果 <i>ByteSize</i> 小于当前大小, 则额外的数据被截除; 否则保留所有现有的数据.</td></tr>
  <tr><td><b>返回值</b></td><td>功时返回新设置的内存空间, 否则为空字符串.</td></tr>
</table></div>

<div class="methodShort" id="GetCapacity"><h2>GetCapacity <span class="ver">[AHK_L 31+]</span></h2>
<pre class="Syntax">MaxItems := Object.GetCapacity()
ByteSize := Object.GetCapacity(Key)</pre>
<p>返回对象或其一个区域当前占用的内存空间.</p></div>

<div class="methodShort" id="GetAddress"><h2>GetAddress <span class="ver">[AHK_L 31+]</span></h2>
<pre class="Syntax">Ptr := Object.GetAddress(Key)</pre>
<p>返回区域字符串的缓存的当前地址, 如果其含有.</p></div>

<div class="methodShort" id="NewEnum"><h2>NewEnum <span class="ver">[AHK_L 49+]</span></h2>
<pre class="Syntax">Enum := Object._NewEnum()</pre>
<p>返回枚举此对象的键值对的新的 <a href="Enumerator.htm">枚举数</a>.</p></div>

<div class="methodShort" id="Clone"><h2>Clone <span class="ver">[AHK_L 60+]</span></h2>
<pre class="Syntax">Clone := Object.Clone()</pre>
<p>返回对象的一个阴影副本.</p></div>

</body>
</html>
